/**
 *
 */
package app;

import java.sql.SQLException;
import java.util.Date;
import java.util.Scanner;

import modelo.Departamento;
import modelo.Empleado;
import modelo.Gerencia;
import dao.DepartamentoDAO;
import dao.EmpleadoDAO;
import dao.GerenciaDAO;

/**
 * @author Adiestramiento
 *
 */
public class Gestion {

	/*Ver Gerencia*/
	public static void getGerencia() throws SQLException{
		Scanner sc = new Scanner(System.in);
		Gerencia X = null;
		try {
			System.out.println("Ingrese el CODIGO de Gerencia ");
			Integer id=  sc.nextInt();
			GerenciaDAO daoG = new GerenciaDAO();
			daoG.openConex();
			System.out.println("Buscando ... ");
			X = daoG.getGerencia(id);
			daoG.closeConex();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			//e.printStackTrace();
			System.out.println("Ha ocurrido un error al intentar buscar 'Gerencia' ");
		}
		//sc.close();
		if(X!=null){
			System.out.println(X);
			System.out.println("Presione ENTER para continuar ...");
			@SuppressWarnings("unused") /*Presionar ENTER*/
			String s = new Scanner(System.in).nextLine();
			
		}else{
			System.out.println("Gerencia no encontrada");
			System.out.println("Presione ENTER para continuar ...");
			@SuppressWarnings("unused") /*Presionar ENTER*/
			String s = new Scanner(System.in).nextLine();
		}
	}

	/*Crear Gerencia*/
	public static void newGerencia() throws SQLException{
		Scanner sc = new Scanner(System.in);
		Gerencia G = new Gerencia();
		System.out.println("INGRESE DESCRIPCION de la gerencia");
		G.setDescripcion(sc.nextLine());

		/*Guardando en la BD*/

		try {
			GerenciaDAO dao = new GerenciaDAO();
			dao.openConex();
			System.out.println("Guardando en la BD ... ");
			dao.insertGerencia(G);
			dao.closeConex();
			System.out.println("Gerencia guardada con exito!");
			System.out.println("Presione ENTER para continuar ...");
			@SuppressWarnings("unused") /*Presionar ENTER*/
			String s = new Scanner(System.in).nextLine();

		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			//e.printStackTrace();
			System.out.println("Gerencia no creada \n Ha ocurrido un error al intentar crear una Gerencia!");
			System.out.println("Presione ENTER para continuar ...");
			@SuppressWarnings("unused") /*Presionar ENTER*/
			String s = new Scanner(System.in).nextLine();
		}

	}


	/*Actualizar Gerencia*/
	public static void updateGerencia() throws SQLException{
		Scanner sc = new Scanner(System.in);
		Gerencia G = new Gerencia();
		try {
			GerenciaDAO daoA = new GerenciaDAO();
			System.out.println("Ingrese el CODIGO de Gerencia ");
			Integer id= sc.nextInt();
			daoA.openConex();
			System.out.println("Buscando... ");
			G = daoA.getGerencia(id);
			daoA.closeConex();
			System.out.println("Ingrese el nuevo valor para la descripci�n");
			G.setDescripcion(new Scanner(System.in).nextLine());

		} catch (ClassNotFoundException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}

		try {

			GerenciaDAO daoG = new GerenciaDAO();
			daoG.openConex();
			System.out.println("Actualizando ... ");
			daoG.UpdateGerencia(G);
			daoG.closeConex();
			System.out.println("La Gerencia ha sido Actualizada satisfactoriamente");
			System.out.println("Presione ENTER para continuar ...");
			@SuppressWarnings("unused") /*Presionar ENTER*/
			String s = new Scanner(System.in).nextLine();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			//e.printStackTrace();
			System.out.println("Ha Ocurrido un Error al intentar actualizar la Gerencia");
			System.out.println("Presione ENTER para continuar ...");
			@SuppressWarnings("unused") /*Presionar ENTER*/
			String s = new Scanner(System.in).nextLine();
		}
	}




	/*Eliminar Gerencia*/
	public static void deleteGerencia() throws SQLException{
		Scanner sc = new Scanner(System.in);
		try {
			System.out.println("INGRESE CODIGO de la Gerencia ");
			Integer id= sc.nextInt();
			GerenciaDAO daoG = new GerenciaDAO();
			daoG.openConex();
			System.out.println("Eliminando...");
			daoG.DeleteGerencia(id);
			daoG.closeConex();
			System.out.println("La gerencia ha sido Eliminada satisfactoriamente");
			System.out.println("Presione ENTER para continuar ...");
			@SuppressWarnings("unused") /*Presionar ENTER*/
			String s = new Scanner(System.in).nextLine();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			//e.printStackTrace();
			System.out.println("Ha Ocurrido un Error al intentar eliminar la gerencia");
			System.out.println("Presione ENTER para continuar ...");
			@SuppressWarnings("unused") /*Presionar ENTER*/
			String s = new Scanner(System.in).nextLine();
		}

	}

	/************ Departamento ********************************/

	/*Ver Departamento*/
	public static void getDepartamento() throws SQLException{
		Departamento X = null;
		try {
			System.out.println("Ingrese CODIGO de Departamento ");
			Integer id= new Scanner(System.in).nextInt();	
			DepartamentoDAO daoG = new DepartamentoDAO();
			daoG.openConex();
			System.out.println("Buscando ... ");
			X = daoG.getDepartamento(id);
			daoG.closeConex();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		if(X!=null){
			System.out.println(X);
			System.out.println("Presione ENTER para continuar ...");
			@SuppressWarnings("unused") /*Presionar ENTER*/
			String s = new Scanner(System.in).nextLine();
		}else{
			System.out.println("Departamento no encontrado");
			System.out.println("Presione ENTER para continuar ...");
			@SuppressWarnings("unused") /*Presionar ENTER*/
			String s = new Scanner(System.in).nextLine();
		}
	}


	/*Crear Departamento*/
	public static void newDepartamento() throws SQLException{
		Scanner sc = new Scanner(System.in);
		Departamento D = new Departamento();

		System.out.println("Ingrese  NOMBRE del departamento");

		D.setNombre(sc.nextLine());

		System.out.println("Ingrese DESCRIPCIÓN del departamento");

		D.setDescripDepto(sc.nextLine());

		System.out.println("Ingrese UBICACIÓN  del departamento");

		D.setUbicacion(sc.nextLine());

		System.out.println("Ingrese TELÉFONO del departamento ");

		D.setTelefono(sc.nextLine());

		System.out.println("Ingrese CODIGO de  la GERENCIA a la que pertenece el departamento ");

		D.setIdGenerecia(sc.nextInt());

		//sc.close();

		/*Guardando en la BD*/

		try {
			DepartamentoDAO dao = new DepartamentoDAO();
			dao.openConex();
			System.out.println("Guardando en la BD");
			dao.insertDepartamento(D);
			dao.closeConex();
			System.out.println("Departamento guardado con exito!");
			System.out.println("Presione ENTER para continuar ...");
			@SuppressWarnings("unused") /*Presionar ENTER*/
			String s = new Scanner(System.in).nextLine();
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			//e.printStackTrace();
			System.out.println("Departamento no creado \n Ha ocurrido un error al intentar crear un Departamento!");
			System.out.println("Presione ENTER para continuar ...");
			@SuppressWarnings("unused") /*Presionar ENTER*/
			String s = new Scanner(System.in).nextLine();
		}

	}



	/*Actualizar Departamento*/
	public static void updateDepartamento() throws SQLException{
		Departamento D = new Departamento();
		try {
			
			System.out.println("Ingrese CODIGO del Departamento ");
			Integer id= new Scanner(System.in).nextInt();;
			DepartamentoDAO daoA = new DepartamentoDAO();
			daoA.openConex();
			System.out.println("Buscando ...");
			D = daoA.getDepartamento(id);
			daoA.closeConex();
			System.out.println("Ingrese nueva DESCRIPCION del Departamento ");
			D.setDescripDepto(new Scanner(System.in).nextLine());
			//sc.close();
		} catch (ClassNotFoundException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}

		try {
			DepartamentoDAO daoG = new DepartamentoDAO();
			daoG.openConex();
			System.out.println("Actualizando ...");
			daoG.UpdateDepartamento(D);
			daoG.closeConex();
			System.out.println("El Departamento ha sido Actualizado satisfactoriamente");
			System.out.println("Presione ENTER para continuar ...");
			@SuppressWarnings("unused") /*Presionar ENTER*/
			String s = new Scanner(System.in).nextLine();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			//e.printStackTrace();
			System.out.println("Ha Ocurrido un Error al intentar actualizar el Departamento");
			System.out.println("Presione ENTER para continuar ...");
			@SuppressWarnings("unused") /*Presionar ENTER*/
			String s = new Scanner(System.in).nextLine();
		}

	}



	/*Eliminar Departamento*/
	public static void deleteDepartamento() throws SQLException{
		try {
			System.out.println("INGRESE CODIGO del Departamento ");
			Integer id= new Scanner(System.in).nextInt();
			DepartamentoDAO daoG = new DepartamentoDAO();
			daoG.openConex();
			System.out.println("Eliminando ...");
			daoG.DeleteDepartamento(id);
			daoG.closeConex();
			System.out.println("El Departamento ha sido Eliminado satisfactoriamente");
			System.out.println("Presione ENTER para continuar ...");
			@SuppressWarnings("unused") /*Presionar ENTER*/
			String s = new Scanner(System.in).nextLine();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			//e.printStackTrace();
			System.out.println("Ha Ocurrido un Error al intentar eliminar el Departamento");
			System.out.println("Presione ENTER para continuar ...");
			@SuppressWarnings("unused") /*Presionar ENTER*/
			String s = new Scanner(System.in).nextLine();
		}
	}




	/******************* Empleado **********************************/

	/*ver empleado*/
	public static void getEmpleado() throws SQLException{
		Scanner sc = new Scanner(System.in);
		Empleado E = null;
		try {
			System.out.println("INGRESE CODIGO de Departamento ");
			EmpleadoDAO daoG = new EmpleadoDAO();
			daoG.openConex();
			Integer id= sc.nextInt();
			sc.close();
			E = daoG.getEmpleado(id);
			daoG.closeConex();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		if(E!=null){
			System.out.println(E);
		}else{
			System.out.println("Empleado no encontrado");
		}
	}


	/*Crear empleado*/
	public static void newEmpleado() throws SQLException{
		Scanner sc = new Scanner(System.in);
		Empleado E = new Empleado();

		System.out.println("INGRESE  Nombre del Empleado");

		E.setNombreEmpleado(sc.nextLine());

		System.out.println("INGRESE DIRECCIÓN del Empleado");

		E.setDireccion(sc.nextLine());

		//System.out.println("INGRESE Fecha de INGRESO  del Empleado");
		E.setF_ing( new Date());
		System.out.println("INGRESE Codigo del Departamento al que pertenece  el Empleado ");

		E.setIdDeptoRef(sc.nextInt());

		System.out.println("INGRESE SUELDO del Empleado ");

		E.setSueldo(sc.nextDouble() );

		System.out.println("INGRESE TELÉFONO del Empleado ");

		E.setTelefono(sc.nextLine());
		sc.close();


		/*Guardando en la BD*/

		try {
			//System.out.println("Guardando en la BD");

			EmpleadoDAO dao = new EmpleadoDAO();
			dao.openConex();
			dao.insertEmpleado (E);
			dao.closeConex();
			System.out.println("Empleado guardado con exito");

		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}


	}

	public static void updateEmpleado() throws SQLException{
		Scanner sc = new Scanner(System.in);
		Empleado E = new Empleado();
		try {
			EmpleadoDAO daoA = new EmpleadoDAO();
			daoA.openConex();
			Integer id= 5;
			E = daoA.getEmpleado(id);
			daoA.closeConex();
			System.out.println("Ingrese nuevo valor para el nombre del empleado");
			E.setNombreEmpleado(sc.nextLine());
			System.out.println("Ingrese nuevo valor para el nombre del empleado");
			E.setTelefono(sc.nextLine());
			sc.close();
		} catch (ClassNotFoundException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}

		try {
			//System.out.println("INGRESE CODIGO del Departamento ");
			EmpleadoDAO daoG = new EmpleadoDAO();
			daoG.openConex();
			//Integer idz= sc.nextInt();
			daoG.UpdateEmpleado(E);
			daoG.closeConex();
			System.out.println("El Empleado ha sido Actualizado satisfactoriamente");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			//e.printStackTrace();
			System.out.println("Ha Ocurrido un Error al intentar actualizar el Empleado");
		}
	}



	public static void deleteEmpleado() throws SQLException{
		Scanner sc = new Scanner(System.in);
		try {
			System.out.println("INGRESE CODIGO del Empleado a eliminar ");
			EmpleadoDAO daoG = new EmpleadoDAO();
			daoG.openConex();
			Integer id= sc.nextInt();
			sc.close();
			daoG.DeleteEmpleado(id);
			daoG.closeConex();
			System.out.println("El Empleado ha sido Eliminado satisfactoriamente");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			//e.printStackTrace();
			System.out.println("Ha Ocurrido un Error al intentar eliminar el Empleado");
		}

	}

}
